<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Document</title>
</head>
<body>
  <button id="btn">点击中奖</button>
  <script>
    function rand(min, max) {
      // 向上取整 100*(0~1不包括1)+1-1
      return Math.ceil(Math.random() * (max-min+1))+min-1
    }
    const btn = document.getElementById('btn')
    btn.addEventListener('click', function() {
      // 定时器
      // setTimeout(() => {
      //   let n = rand(1, 100)
      //   if(n <= 50) {
      //     alert('中了')
      //   } else {
      //     alert('没中');
      //   }
      // },1000)
      // Promise形式实现 参数是一个函数
      // 函数的形参是resolve（function） 解决和reject（function） 拒绝
      const p = new Promise((resolve, reject) => {
        setTimeout(() => {
          let n = rand(1, 100)
          if (n <= 50) {
            // 异步调用成功用resolve
            resolve(n) // 将promise对象的状态设置为Fulfilled
          } else {
            // 异步调用失败用reject
            reject(n) // 将promise对象的状态设置为Rejected
          }
        }, 1000)
      })
      // 调用then方法，指定成功和失败的回调函数。then方法的参数是两个函数，第一个参数是成功时的回调，第二个参数时失败时的回调
      p.then(
        (value) => {
          console.log('号码'+value+'中了');
        },
        (reason) => {
          console.log('号码'+reason+'没中');
        })
      })
  </script>
</body>
</html>